These tutorials require a number of external libraries in order to function. The specific version of these libraries that the tutorials use are distributed with the tutorials. The tutorial source distribution can be found online. This section will describe each of the external libraries, how to build them, and how to build the tutorials themselves. Windows and Linux builds are supported.
You will need minimal familiarity with using the command line in order to build these tutorials. Also, any mention of directories is always relative to where you unzipped this distribution.
The layout of the files in the tutorial directory is quite simple. The
framework
directory and all directories of the form
Tut*
contain all of the source code for the tutorials
themselves. Each Tut*
directory has the code for the various
tutorials. The framework
directory simply contains utility code
that is commonly used by each tutorial.
Each tutorial contains one or more projects; each project is referenced in the text for that tutorial.
The Documents
directory contains the source for the text
documentation explaining how these tutorials work. This source is in xml files using the
DocBook 5.0 format.
Every other directory contains the code and build files for a library that the tutorials require.
In order to build everything, you will need to download the Premake 4 utility for your platform of choice.
Premake is a utility like CMake: it generates build files for a specific platform. Unlike CMake, Premake is strictly a command-line utility. Premake's build scripts are written in the Lua language, unlike CMake's build scripts that use their own language.
Note that Premake only generates build files; once the build files are created, you can use them as normal. It can generate project files for Visual Studio, Code::Blocks, and XCode, as well as GNU Makefiles. And unless you want to modify one of the tutorials, you only need to run Premake once for each tutorial.
The Premake download comes as a pre-built executable for all platforms of interest, including Linux.
The Unofficial OpenGL SDK is an aggregation of libraries, unifying a number of tools for developing OpenGL applications, all bound together with a unified build system. A modified SDK distribution is bundled with these tutorials; this distro does not contain the documentation or GLFW that comes with the regular SDK.
The SDK his library uses Premake to generate its build files. So, with
premake4.exe in your path, go to the glsdk
directory. Type premake4
, where
plat
plat
is the name of the platform of choice. For Visual
Studio 2008, this would be “vs2008”; for VS2010, this would be
“vs2010.” This will generate Visual Studio projects and solution files
for that particular version.
For GNU and makefile-based builds, this is “gmake”. This will generate a
makefile. To build for debug, use make config=debug
; similarly,
to build for release, use make config=release
.
Using the generated build files, compile for both debug and release. You should build the entire solution; the tutorials use all of the libraries provided.
Note that there is no execution of make install
or similar
constructs. The SDK is designed to be used where it is; it does not install itself to
any system directories on your machine. Incidentally, neither do these tutorials.
Each tutorial directory has a premake4.lua
file; this file is
used by Premake to generate the build files for that tutorial. Therefore, to build any
tutorial, you need only go to that directory and type premake4
, then use those build files to build
the tutorial.plat
Each tutorial will generally have more than one source file and generate multiple executables. Each executable represents a different section of the tutorial, as explained in that tutorial's documentation.
If you want to build all of the tutorials at once, go to the root directory of the
distribution and use Premake on the premake4.lua
file in that
directory. It will put all of the tutorials into one giant project that you can
build.
If you look at any of the tutorial source files, you will not find the
main
function defined anywhere. This function is defined in
framework/framework.cpp
; it and all of the other source files
in the framework
directory is shared by every tutorial. It does the
basic boilerplate work: creating a FreeGLUT window, etc. This allows the tutorial source
files to focus on the useful OpenGL-specific code.